#!/bin/bash

# 后端服务启动脚本
# 支持使用uvicorn或gunicorn启动服务

# 配置
APP_DIR="$(cd "$(dirname "$0")" && pwd)"
LOG_DIR="${APP_DIR}/logs"
VENV_DIR="${APP_DIR}/venv"
APP_MODULE="app.main:app"
PORT=8116
HOST="127.0.0.1"

# 创建日志目录
mkdir -p ${LOG_DIR}

# 检查虚拟环境
if [ ! -d "${VENV_DIR}" ]; then
    echo "错误: 虚拟环境不存在，请先创建虚拟环境并安装依赖"
    echo "提示: python -m venv venv && source venv/bin/activate && pip install -r requirements.txt"
    exit 1
fi

# 激活虚拟环境
source ${VENV_DIR}/bin/activate

# 检查是否安装了gunicorn
if command -v gunicorn &> /dev/null; then
    echo "使用 gunicorn 启动服务..."
    nohup gunicorn ${APP_MODULE} \
        --bind ${HOST}:${PORT} \
        --workers 4 \
        --worker-class uvicorn.workers.UvicornWorker \
        --timeout 120 \
        --access-logfile ${LOG_DIR}/access.log \
        --error-logfile ${LOG_DIR}/error.log \
        --daemon
    echo "服务已启动，使用 ./stop_service.sh 停止服务"
    echo "日志文件: ${LOG_DIR}/access.log 和 ${LOG_DIR}/error.log"
else
    # 使用uvicorn启动
    echo "使用 uvicorn 启动服务..."
    nohup uvicorn ${APP_MODULE} \
        --host ${HOST} \
        --port ${PORT} \
        --log-level info \
        > ${LOG_DIR}/uvicorn.log 2>&1 &
    
    # 保存PID
    echo $! > ${APP_DIR}/.pid
    echo "服务已启动，PID: $!"
    echo "使用 ./stop_service.sh 停止服务"
    echo "日志文件: ${LOG_DIR}/uvicorn.log"
fi

# 检查服务是否成功启动
sleep 2
if curl -s http://${HOST}:${PORT}/api/health > /dev/null; then
    echo "服务健康检查通过!"
else
    echo "警告: 服务可能未正确启动，请检查日志"
fi 